package com.xoa.service.party.party;


import com.xoa.dao.party.party.PartyMapper;
import com.xoa.model.party.party.Party;
import com.xoa.util.ToJson;
import com.xoa.util.common.L;
import com.xoa.util.common.StringUtils;
import com.xoa.util.page.PageParams;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 创建作者:   贾志康
 * 创建日期:   2018年3月22日 下午14:59:00
 * 类介绍  :党组织service
 * 构造参数:
 */

@Service
public class PartyService {

    @Resource
    private PartyMapper partyMapper;
     /**
          * 创建人：贾志康
          * 创建时间：2018年3月22日 下午15:15
          * 方法介绍：党组织添加
          * 参数说明：
          */
     @Transactional
        public ToJson<Party> insertParty(Party party){
            ToJson<Party> json=new ToJson<Party>(1,"error");

            try {
                int count=partyMapper.insertSelective(party);
                if(count>0){
                    json.setMsg("ok");
                    json.setFlag(0);
                }
            }catch (Exception e){
                json.setMsg(e.getMessage());
                L.e("PartyService insertParty:"+e);
                e.printStackTrace();
            }

            return json;
        }
         /**
              * 创建人：贾志康
              * 创建时间：2018年3月22日15:31
              * 方法介绍：根据ID删除党组织
              * 参数说明：
              */
         @Transactional
        public ToJson<Party> delPartyById(Integer partyId){
            ToJson<Party> json=new ToJson<Party>(1,"error");

            try {
                int count=partyMapper.deleteByPrimaryKey(partyId);
                if(count>0){
                    json.setMsg("ok");
                    json.setFlag(0);
                }
            }catch (Exception e){
                json.setMsg(e.getMessage());
                L.e("PartyService delParty:"+e);
                e.printStackTrace();
            }


            return json;
        }

         /**
              * 创建人：贾志康
              * 创建时间：2018年3月22日 15:42
              * 方法介绍：根据Id查询党组织信息
              * 参数说明：
              */
         @Transactional
         public ToJson<Party> selPartyById(Integer partyId){

             ToJson<Party> json=new ToJson<Party>(1,"error");

             try {


                 Party party = partyMapper.selectByPrimaryKey(partyId);
                 json.setObject(party);
                 json.setMsg("ok");
                 json.setFlag(0);
             }catch (Exception e){
                 json.setMsg(e.getMessage());
                 L.e("PartyService selPartyById:"+e);
                 e.printStackTrace();
             }

             return json;
         }
          /**
               * 创建人：贾志康
               * 创建时间：2018年3月22日 15:56
               * 方法介绍：查询所有党组织信息
               * 参数说明：
               */
            @Transactional
            public ToJson<Party> selPartyByCond(Party party,Integer page,Integer pageSize,boolean useFlag) {
            ToJson<Party> json = new ToJson<Party>(1, "error");

                try {
                    PageParams pageParams = new PageParams();
                    pageParams.setPage(page);
                    pageParams.setPageSize(pageSize);
                    pageParams.setUseFlag(useFlag);
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("page", pageParams);
                    map.put("party", party);

                   List<Party>  list=partyMapper.selPartyByCond(map);

                    json.setObj(list);
                    json.setMsg("ok");
                    json.setFlag(0);

                } catch (Exception e) {
                    json.setMsg(e.getMessage());
                    L.e("PartyService selPartyByCond:"+e);
                    e.printStackTrace();
                }

            return json;

            }
             /**
                  * 创建人：贾志康
                  * 创建时间：2018年3月22日 17:00
                  * 方法介绍：根据id修改党组织
                  * 参数说明：
                  */
             @Transactional
             public ToJson<Party> upPartyById(Party party){
                 ToJson<Party> json = new ToJson<Party>(1, "error");

                 try{
                     int count=partyMapper.updateByPrimaryKeySelective(party);
                     if(count>0){
                         json.setMsg("ok");
                         json.setFlag(0);
                     }
                 }catch(Exception e){
                     json.setMsg(e.getMessage());
                     L.e("PartyService upPartyById:"+e);
                     e.printStackTrace();
                 }

                 return json;
             }
			 
			 
            /**
             * 创建作者:   郭心雨
             * 创建日期:   2018年3月29日 下午12:55:37
             * 方法介绍:   获取子目录
             *
             * @return List<Department>   返回子目录
             */

            public List<Party> getChDept(int pId) {
                List<Party> list = partyMapper.getChDept(pId);
                return list;
            }
            /**
             * 创建作者:   郭心雨
             * 创建日期:   2018年3月29日 下午12:55:37
             * 方法介绍:   根据部门id获取部门
             * 参数说明:   @param pId  部门id
             * 参数说明:   @return
             *
             * @return Department   返回部门信息
             */
            public Party getDeptByPId(int pId) {
                //根據上級部門id查找上级部门信息
                Party party = partyMapper.getDeptByPId(pId);
                //查到上级部门的上级部门名字
                party.setpParentName(partyMapper.getParentNameByPId(party.getpParentId()));
                return party;
            }

            /**
             * 创建作者:   郭心雨
             * 创建日期:   2018年3月29日 下午13:07:37
             * 方法介绍:   根据父部门id判断是否有分级机构
             * @return String
             */
            public int selClaNumByParentId(int deptId){
                return partyMapper.selClaNumByParentId(deptId);
            }


            /**
             * 创建作者:   郭心雨
             * 创建日期:   2018年3月30日 下午15:09:35
             * 根据父部门查询其子部门编号是否重复
             * @return
             */
            public ToJson<Party> selpNoBypParentId(String pParentId,String pNo,int editFlag,String propNo){
                ToJson<Party> json = new ToJson<Party>(1, "error");
                try{
                    if(!StringUtils.checkNull(pParentId) && pParentId.contains(",")){
                        pParentId=pParentId.substring(0,pParentId.length()-1);
                    }
                    Map<String,Object> map=new HashMap<>();
                    map.put("pParentId",pParentId);
                    if(editFlag==1){
                        if(!StringUtils.checkNull(pParentId) && !pParentId.equals("0")){
                            Party party=partyMapper.getPartyById(Integer.valueOf(pParentId));
                            propNo=party.getpNo()+propNo;
                            map.put("propNo",propNo);
                        }else{
                            map.put("propNo",propNo);
                        }
                    }
                    List<String> pNoList=partyMapper.selpNoBypParentId(map);
                    for (String pNoStr : pNoList) {
                        if (pNoStr.equals(pNo)) {
                            json.setFlag(1);
                            json.setMsg("repeat");
                            return json;
                        }
                    }
                    json.setMsg("ok");
                    json.setFlag(0);
                }catch(Exception e){
                    e.printStackTrace();
                    json.setMsg(e.getMessage());
                    L.e("PartyService selpNoBypParentId:"+e);
                }
                return  json;
            }

    }
